Programmable logic devices are desirable because of the flexibility these devices offer. However, with this flexibility comes challenges with regard to interfacing with the numerous interfaces that are currently available and features that will be developed in the future. As there are a number of configurable options depending on the user's situation, these various options may become unmanageable, especially with regard to the Input/Output (I/O) port count needed to support the plurality of configurable options. That is, if a set of I/O ports are used for each configurable option, the interface becomes overcrowded with I/O ports needed to support each configurable option.
As a result, there is a need to solve the problems of the prior art to provide a hardware block for a PLD that is capable of managing a large number of configurable options and a large number of I/O ports. In addition, the hardware block should be expandable and backward compatible.